package com.caesar.string;

import org.junit.jupiter.api.Test;

/**
 * @author caesar
 * @date 2025/7/15
 * @Description:
 * @apiNote
 */
public class TestStringCount {
    @Test
    public void test1(){
        String s1 = "hello";
        String s2 = "hello";
        //问：上面有几个字符串对象？
        //2个字符串的变量，指向同一个字符串对象
    }

    @Test
    public void test2(){
        String s3 = new String("hello");
        //问：上面有几个字符串对象？
        //2个。（1）"hello"是一个字符串对象，（2）new了一个
    }

    @Test
    public void test3(){
        String s = "hello" + "world" + "java" + "atguigu";
        //问：上面有几个字符串对象？
        //1个。编译器直接优化处理为 helloworldjavaatguigu";
    }

    @Test
    public void test4(){
        String s1 = "hello";
        String s2 = new String("hello").intern();
        //2个（1）"hello"是一个字符串对象，（2）new了一个
        //intern() 方法会先去常量池中寻找是否已经有 "hello"，如果有直接返回常量池中那个字符串的地址，
        // 如果没有则将 "hello" 放入常量池中，并返回
        System.out.println(s1 == s2);//true
    }
}
